'use strict';
/**
 * author：小小游 --- allen
 * date：2018.02.08
 * lastUpdateDate：2018.02.08
 * description：函数的数组参数的解构和默认值的吊炸天用法
 */
// ES6设置默认值方式，变得极致吊炸天
/**
 * 这时候如果直接testFn ()调用为啥会报错，下面我简单解释下：
 * 首先这种testFn ()方法，它内部函数会这样解析，如下：
 * function testFn ([a = 12, b = 15] = undefined) {
 *     console.log(a, b);
 * }
 * 你在试图通过undefined.a,undefined.b显然是错误的，那么
 * 如何解决这个问题呢，如下几种方式：
 * 1.testFn ([]);
 * 2.testFn ([1000000]);
 * 3.testFn ([,1000])
 * 4.testFn ([200,5000]);
 * 5.testFn ([,undefined]);
 * 第五种调用方式我解释下：
 * 如果调用testFn ()参数列表里面有undefined，那么就默认取默认值，
 * 除了undefined之外的其它值都是打印这个值，比如testFn ([, null]);
 * 那么此时的结果就是12 null
 *----------------------------*********-----------------------------
 * 那么我就想testFn ()直接调用有没有办法呢，把函数改造下，如下：
 * function testFn ([a = 12, b = 15] = []) {
 *     console.log(a, b);
 * }
 * 当调用testFn ();不传任何参数的时候它会将右侧的[].a和[].b
 * 进行赋值，所以就可以正常打印结果了
 */
function testFn ([a = 12, [b = 13, c = 14] = [], d = 15] = []) {
    console.log(a, b, c, d);
}

// result：12 13 14 15
testFn ();
